<?xml version = '1.0' encoding = 'UTF-8'?>
<HBRRepo><variables/><rulesets/><rules><rule id="1" name="OQP_Validate Adjustment" product="Planning"><property name="application">SalesPln</property><property name="plantype">OEP_QTP</property><property name="seeded">true</property><script type="groovy">			boolean bflag=false;			
			def stdMemberMap = ["Period":"BegBalance","Measures":"OQP_Subordinate Constraints" ];
			List&lt;String> fixMemberNames = operation.grid.pov*.essbaseMbrName;
			// def PovDimensions = []
			// def PovDimensionMembers = []
			List&lt;String> PovDimensions = new ArrayList&lt;String>();
			List&lt;List&lt;String>> PovDimensionMembers = new ArrayList&lt;List&lt;String>>();
			String RowDimension;
			StringBuilder cscript = new StringBuilder();
			DataGrid currentGrid=operation.grid;
			List&lt;DataGrid.HeaderCell> hcells=currentGrid.getPov()
			hcells.each{
			def dimName = it.getDimName();
			DimensionType dType=it.getDimensionType();			
			if (dType==DimensionType.CUSTOM)
              {
                  PovDimensions.add(dimName)
                  PovDimensionMembers.add(["OEP_Any " + dimName])
              }
			else
              {
                  PovDimensions.add(dimName)
                  PovDimensionMembers.add([it.getMbrName()])
              }
			}
			List&lt;DataGrid.Row> hrow=currentGrid.getRows()
			hrow.each{
			List&lt;DataGrid.HeaderCell> hcell=it.getHeaders() 
			hcell.each{
			def dimName = it.getDimName();
			DimensionType dType=it.getDimensionType();
			RowDimension=dimName
					if (!PovDimensions.contains(dimName))
					{
						PovDimensions.add(dimName)
						PovDimensionMembers.add(["OEP_Any " + dimName])		
					}
				}
			}
			List&lt;List&lt;DataGrid.HeaderCell>> cols = currentGrid.getColumns();
			for (List&lt;DataGrid.HeaderCell> cells : cols) 
			{			 
				for (DataGrid.HeaderCell cell : cells)  
				  {
				   String memName = cell.getMbrName();
				   String dimName = cell.getDimName();
				   if (!PovDimensions.contains(dimName) &amp;&amp; !dimName.equals("Period") &amp;&amp; !dimName.equals("Measures") )
					  {
						PovDimensions.add(dimName)
						PovDimensionMembers.add(["OEP_Any " + dimName])       
					  }   	
				 }						   
			 }
             Cube lookupCube = operation.getApplication().getCube("OEP_QTP");    
			DataGridDefinitionBuilder builder = lookupCube.dataGridDefinitionBuilder(); 
			builder.setSuppressMissingBlocks(true);
			builder.setPov(PovDimensions, PovDimensionMembers);
			builder.addColumn(["Period"],[[stdMemberMap["Period"]]]);
			builder.addRow(["Measures"], [[stdMemberMap["Measures"]]]);
			DataGridDefinition gridd = builder.build();
			DataGrid datag = lookupCube.loadGrid(gridd, false);
			DataGrid.DataCell constraint=datag.getCellWithMembers("OQP_Subordinate Constraints")			
			if ((constraint==null) || (constraint.getData() != 1.0))
            {  	
                List&lt;DataGrid.Row> rows = operation.grid.getRows();
				int TotRows= rows.size()                
				Double totAmt=0;
				Double QuotaAmt=0			   
				 int iRow=0;
				if (TotRows>1)
				for (DataGrid.Row row : rows) 
				{
					Double rowAmt = 0;
					Double AdjPer = 0;
					Double AdjVal = 0;
					List&lt;DataGrid.DataCell> subRows = row.getData();
					for(DataGrid.DataCell cell : subRows) 
					{
					 String periodName=cell.getPeriodName();
					 String AcctName = cell.getAccountName();
					if(periodName.equals("YearTotal"))
					{
					  if (AcctName.equals("OQP_Allocated Target Quota"))
					  {
						rowAmt=cell.getData()            
					   if (iRow &lt; TotRows-1)
							{
								QuotaAmt=QuotaAmt+rowAmt
							}
					  }		
					 if (AcctName.equals("OQP_Quota Adjustment Value"))
					  {
						AdjVal=cell.getData()  ;                     
						 rowAmt= rowAmt + AdjVal;
					  }
					}
				  }
					if (iRow&lt;TotRows-1)
					  {
						totAmt=totAmt+rowAmt;
					  }  
					iRow=iRow+1;
				}     
				if (QuotaAmt.round(2) != totAmt.round(2))
				{
					throwVetoException("The Adjustments changed the allocated quota. Ensure its equal to overall quota of "+ QuotaAmt.round())        
				}			   			
			}
		
		</script></rule></rules><components/><deployobjects><deployobject product="2" application="salespln" plantype="oep_qtp" obj_id="1" obj_type="1" name="OQP_VALIDATE ADJUSTMENT"/></deployobjects></HBRRepo>